"""
4、双素数是指一对差值为2的素数。例如：3和5就是一对双素数，5和7是一对双素数。
编写函数找出所有小于等于1000的双素数，并以字典的形式存储。
显示如下：(文件名：py0220.py)
"""
res = []
dict_ = {}


def getPrimes(x):
    """
    该函数使用线性筛直接得到x以内的所有素数，时间复杂度：O(N)
    """
    book = [False for i in range(x+1)]
    for i in range(2, x + 1):
        if book[i] is False:
            res.append(i)
        for j in res:
            if j * i <= x:
                book[j * i] = True
            if i % j == 0:
                break


getPrimes(1000)
for i in range(0, len(res) - 1):  # 最后一个数就是最大的，后面就不可能有比它大二的数
    if res[i+1] - res[i] == 2:
        dict_[res[i]] = res[i+1]
        # dict_.update({res[i], res[i+1]})
print("1000以内的所有双素数为： ")
print(dict_)